/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gui;

import javax.microedition.lcdui.*;
import app.ConsultaCartelera;
/**
 * @author REX
 */
public class MenuPrincipal extends Canvas implements CommandListener {
    private ConsultaCartelera midlet;
    private int width,height;
    private int anchor = Graphics.TOP | Graphics.LEFT;
    private int barTitulo = 20;
    String[] opciones = {"Ver cines más cercanos","Ver mi posición actual","Ayuda","Salir"};
    /*Referencias a las demas pantallas*/
    private MenuCines mc = new MenuCines(this);
    private Ayuda a = new Ayuda(this);
    private MiPosicion pos;
    private FuncionalidadMenu fl = new FuncionalidadMenu(0, 3, 0,opciones);
    /**
     * constructor
     */
    public MenuPrincipal(ConsultaCartelera midlet) {
        try {
	    setCommandListener(this);
	    addCommand(new Command("Salir", Command.EXIT, 1));
            this.midlet = midlet;
            pos = new MiPosicion(midlet.latitud, midlet.longitud,this);
        } catch(Exception e) {
            e.printStackTrace();
        }
    } 
    
    /**
     * paint
     */
    public void limpiaPantalla(Graphics g){
        g.setColor( 255, 255, 255 );
        g.fillRect( 0, 0, width, height );
    }
    public void paint(Graphics g) {
        width = getWidth();
        height = getHeight();
        limpiaPantalla(g);
        Font f = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE);
        g.setFont(f);
        g.setColor(0x32639A);
        /*Titulo*/
        String titulo = "Consulta";
        int anchoTitulo = f.stringWidth(titulo);
        int altoTitulo = f.getHeight();
        int posXt = (width - anchoTitulo)/2;
        int posYt = barTitulo- altoTitulo;
        g.drawString(titulo,posXt ,posYt , anchor);
        g.setColor(0x4486C7);
        g.setStrokeStyle(Graphics.SOLID);
        g.drawLine(0, barTitulo - 1, width, barTitulo - 1);
        g.drawLine(0, barTitulo, width, barTitulo);

        /*
         Tamaño de los cuadros de las opciones
         */
        Font f2 = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
        g.setFont(f2);
        int nW =(int)(width*0.8);
        int nH = ((int)(height*0.8) - barTitulo -2 )/4;
        int deltax = (int)(width*0.1);
        int deltay =barTitulo + (int)(height*0.1);
        int y;
        for(int i=0;i<opciones.length;i++){
            y = deltay +  (nH + 5 )*i;
            int delayf = ( nW - f2.stringWidth( opciones[i] ) )/2 + deltax;
            if(fl.getActual() != i){
               dibujaSeleccionado( g, deltax, delayf, y, nW, nH,  i);
            }else{
                dibujaNoSeleccionado( g, deltax, delayf, y, nW, nH,  i);
            }

        }
    }
    public void dibujaSeleccionado(Graphics g,int deltax,int delayf,int y,int nW,int nH,int  i){
        g.setColor(0xFFFFFF);
        g.fillRect( deltax, y , nW, nH );
        g.setColor(0x5D781D);
        g.drawString(opciones[i], delayf, y + nH/4, anchor);
        g.setColor(0x89B056);
        g.drawRect( deltax, y, nW, nH);
    }
    public void dibujaNoSeleccionado(Graphics g,int deltax,int delayf,int y,int nW,int nH,int  i){
         g.setColor(0xA8CF64);
         g.fillRect( deltax, y , nW, nH );
         g.setColor(0xFFFFFF);
         g.drawString(opciones[i],delayf, y + nH/4,  anchor);
         g.setColor(0x89B056);
         g.drawRect( deltax, y, nW, nH);
    }
    /**
     * Called when a key is pressed.
     */
    protected  void keyPressed(int keyCode) {
        String str = getKeyName(keyCode);
        if (getGameAction(keyCode)==UP) {
            fl.subir();
            repaint();
        }if (getGameAction(keyCode)==DOWN) {
            fl.bajar();
            repaint();
        }if(getGameAction(keyCode)==FIRE ||str.toUpperCase().equals("LEFT")){

            int sel = fl.getActual();
            selecciona(sel);
          
        }
    }

    public ConsultaCartelera getMidlet() {
        return midlet;
    }

    public void selecciona(int sel){
        switch(sel){
            case 0 :
                midlet.pantalla.setCurrent(mc);
                break;
            case 1 :
                midlet.pantalla.setCurrent(pos);
                break;
            case 2 :
                midlet.pantalla.setCurrent(a);
                break;
            case 3 :
                 midlet.exit();
                 break;

        }
    }

    public void commandAction(Command c, Displayable displayable) {
         if (c.getLabel().equals("Salir")) {
            midlet.exit();
         }
    }

}